1. Field of the Invention
The present invention generally relates to responding to cryptographic key requests. More particularly, the present invention relates to selecting cached keys in response to key requests.
2. Related Art
Cryptography is widely used for a variety of security applications. These security applications include encryption and decryption. Encryption is the transformation of data into a form that is close to impossible as possible to read without the appropriate knowledge (a key). Its purpose is to ensure privacy by keeping information hidden from anyone for whom it is not intended, even those who have access to the encrypted data. Decryption is the reverse of encryption. It is the transformation of encrypted data back into an intelligible form. Both encryption and decryption generally require the use of secret information, referred to as a key.
RSA is a public-key cryptosystem. RSA is characterized by the RSA key. The RSA key is comprised of a pair of keys. The pair of keys includes a public key and a private key. The RSA public-key cryptosystem can be used in protocols, such as SSL (Secure Socket Layer) and SSH (Secure Shell), which permit computer systems to securely communicate over a network.
Typically, the size (or length in bits) of the RSA key depends on the security needs of the particular application. The larger the size of the RSA key, the greater the security, but also the longer it takes to generate the RSA key.
FIG. 1 illustrates response to a request for a RSA key of x-bits in accordance with the prior art. As illustrated in FIG. 1, at 10 a request for a RSA key of x-bits is received, whereas x is, for example, 512, 768, or 1024. Other values for x are possible. At 20, a key generator generates the RSA key of x-bits in real-time by using a CPU (central processing unit). Moreover, at 30 the RSA key of x-bits is provided in response to the request for a RSA key of x-bits.
Generation of the RSA key is a CPU-intensive task. Typically, due to cost concerns, CPUs in a variety of systems are not designed with sufficient computational power to generate the RSA key in real-time without degrading system performance. Thus, the CPU may be occupied with generating the RSA key for seconds or even minutes to the detriment of other resources demanding use of the CPU. For example, a certain CPU may take 20 seconds to generate a 512-bit RSA key, may take 45 seconds to generate a 768-bit RSA key, and may take 90 seconds to generate a 1024-bit RSA key.
Furthermore, these cost-conscious systems usually rely on simple co-operative multitasking operating systems, which rely on processes to decide when to relinquish the CPU. Consuming the CPU for long times necessary to generate RSA keys in most cases is prohibited. While use of a preemptive operating system is a solution, it introduces complexities and problems into the system that may outweigh its benefits.